package org.toy.maxent;

import java.io.File;
import java.io.IOException;

import opennlp.maxent.ContextGenerator;
import opennlp.maxent.MaxentModel;
import opennlp.maxent.io.SuffixSensitiveGISModelReader;

/**
 * 
 * @author weip.pengw
 * @time 2010-9-8 上午11:10:05
 */
public class Classify {

	private MaxentModel model;

	private String modelFilePath;

	private ContextGenerator cg;

	public Classify(String modelFilePath) {
		this.modelFilePath = modelFilePath;
		try {
			model = new SuffixSensitiveGISModelReader(new File(modelFilePath))
					.getModel();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		cg = new ChineseMultiFieldContextGenerator();
	}

	public void classify(String predicates) {
		//long t1=System.currentTimeMillis();
		String[] contexts = cg.getContext(MultiFieldContextGeneratorSupport
				.toContextList(predicates));

		double[] ocs = model.eval(contexts);
		//long t2=System.currentTimeMillis();
		//System.out.println(t2-t1);

		System.out.println(model.getAllOutcomes(ocs));
	}

	public static void main(String[] args) {

		Classify c = new Classify(args[0]);
		long t1=System.currentTimeMillis();
		for(int i=0;i<10;i++){
			c.classify("<titile:白色机场机场订票电话是↓4θθ-6881-064(机票/指定改签/退票)><appendTitle:机 场 订 票 电 话 是 【４００＋６８８１０６４】〖＋４Ｏ０十６８８１０６４＋〗一一全 国 统 一 （ 二 十 四 小 时 服 务 ）>");
		}
		long t2=System.currentTimeMillis();
		System.out.println(t2-t1);
	}

}
